package vistas.ui;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import controladores.ControladorBorrarCategoriaFrame;
import controladores.ControladorBorrarClienteFrame;
import controladores.ControladorModificarClienteFrame;
import controladores.interfaces.ControladorAdministradorCategorias;
import controladores.interfaces.ControladorAdministradorClientes;
import entidades.Categoria;
import entidades.Cliente;

public class ModificarClienteFrame extends JInternalFrame{

        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        // ATRIBUTOS - componentes
        private JLabel lblCuitActual;
        private JComboBox cmbCuitActual;
        private JLabel lblCuit;
        private JTextField txtCuit;
        private JLabel lblNombre;
        private JTextField txtNombre;
        private JLabel lblRazonSocial;
        private JTextField txtRazonSocial;
        private JLabel lblDireccion;
        private JTextField txtDireccion;
        private JLabel lblTelefono;
        private JTextField txtTelefono;
        private JLabel lblFax;
        private JTextField txtFax;
        private JLabel lblEmail;
        private JTextField txtEmail;
        private JLabel lblCategoria;
        private JComboBox cmbCategoria;
        private JButton btnAceptar;
        private JButton btnCancelar;
        
        // CONSTRUCTOR - levanta la interfaz
        
        public ModificarClienteFrame(){
                
                super();
        
                // Caracteristicas de la ventana - Propiedades
                this.setTitle("Modificar datos cliente");
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setVisible(true);
                this.setSize(400,400);
                                
                // Inicializo elementos de la ventana
                lblCuitActual = new JLabel("CUIT actual: ");
                cmbCuitActual = new JComboBox();
                lblCuit = new JLabel("CUIT: ");
                txtCuit = new JTextField();
                lblNombre = new JLabel("Nombre: ");
                txtNombre = new JTextField();
                lblRazonSocial = new JLabel("Razon Social: ");
                txtRazonSocial = new JTextField();
                lblDireccion = new JLabel("Direccion: ");
                txtDireccion = new JTextField();
                lblTelefono = new JLabel("Telefono: ");
                txtTelefono = new JTextField();
                lblFax = new JLabel("Fax: ");
                txtFax = new JTextField();
                lblEmail = new JLabel("Email: ");
                txtEmail = new JTextField();
                lblCategoria = new JLabel("Categoria: ");
                
                // Cargo el combo box de las categorias
                cmbCategoria = new JComboBox();
                ControladorAdministradorCategorias contCategorias = new ControladorBorrarCategoriaFrame();
                Vector<Categoria> categorias = new Vector<Categoria>();
                categorias = contCategorias.obtenerCategorias();
                for(Categoria cat : categorias){
                        cmbCategoria.addItem(cat.getNombre());                  
                }
                
                // Cargo el combo box de los CUITs disponibles
                cmbCuitActual = new JComboBox();
                ControladorAdministradorClientes controladorClientes = new ControladorBorrarClienteFrame();
                cmbCuitActual.addItem("");
                for(String cuit : controladorClientes.obtenerCUITs()){
                        cmbCuitActual.addItem(cuit);
                }
                
                
                btnAceptar = new JButton("Aceptar");
                btnCancelar = new JButton("Cancelar");
                
                // Obtencion del content pane
                Container contenedor = this.getContentPane();
                
                // Definicion del layout
                contenedor.setLayout(new GridLayout(10, 2, 5, 5));
                
                // Cargo los elementos en la ventana
                contenedor.add(lblCuitActual);
                contenedor.add(cmbCuitActual);
                contenedor.add(lblCuit);
                contenedor.add(txtCuit);
                contenedor.add(lblNombre);
                contenedor.add(txtNombre);
                contenedor.add(lblRazonSocial);
                contenedor.add(txtRazonSocial);
                contenedor.add(lblDireccion);
                contenedor.add(txtDireccion);
                contenedor.add(lblTelefono);
                contenedor.add(txtTelefono);
                contenedor.add(lblFax);
                contenedor.add(txtFax);
                contenedor.add(lblEmail);
                contenedor.add(txtEmail);
                contenedor.add(lblCategoria);
                contenedor.add(cmbCategoria);
                contenedor.add(btnAceptar);
                contenedor.add(btnCancelar);
                
                // Manejo de los eventos
                btnCancelar.addActionListener(new ActionListener() 
                {                       
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
                                // TODO Auto-generated method stub
                                dispose();
                        }
                });
                
                btnAceptar.addActionListener(new ActionListener() 
                {                       
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
                                // TODO Auto-generated method stub
                                ControladorAdministradorClientes controlador = new ControladorModificarClienteFrame();
                                controlador.modificarCliente((String)cmbCuitActual.getSelectedItem(), txtCuit.getText(), txtNombre.getText(), txtRazonSocial.getText(), txtDireccion.getText(),
                txtTelefono.getText(), txtFax.getText(), txtEmail.getText(), (String)cmbCategoria.getSelectedItem());
                                JOptionPane.showMessageDialog(null, "Modificado con Exito");
                                dispose();
                        }
                });
                
                cmbCuitActual.addActionListener(new ActionListener() {
                        
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // TODO Auto-generated method stub
                                if (cmbCuitActual.getSelectedItem().equals("")){
                                        txtCuit.setText(null);
                                        txtDireccion.setText(null);
                                        txtEmail.setText(null);
                                        txtFax.setText(null);
                                        txtNombre.setText(null);
                                        txtRazonSocial.setText(null);
                                        txtTelefono.setText(null);
                                }else{
                                        ControladorAdministradorClientes controlador = new ControladorModificarClienteFrame();
                                        
                                        Cliente clienteAModificar = new Cliente();
                                        clienteAModificar = controlador.obtenerCliente((String)cmbCuitActual.getSelectedItem());
                                        
                                        txtCuit.setText(clienteAModificar.getCuit());
                                        txtDireccion.setText(clienteAModificar.getDireccion());
                                        txtEmail.setText(clienteAModificar.getEmail());
                                        txtFax.setText(clienteAModificar.getFax());
                                        txtNombre.setText(clienteAModificar.getNombre());
                                        txtRazonSocial.setText(clienteAModificar.getRazonSocial());
                                        txtTelefono.setText(clienteAModificar.getTelefono());
                                        cmbCategoria.setSelectedItem(clienteAModificar.getCategoria());                                 
                                }
                        }
                });
        }
        
        // METODOS
        
}